# 1.布尔对象
# True
# False

# 2.布尔表达式
# 2.1.是否相等
print(1 == 1)  # True
print(1 == 2)  # False
print(1 == '1')  # False
print('1' == '1')  # True

# 2.2.是否不相等
print(1 != 1)  # False
print(1 != 2)  # True
print(1 != '1')  # True
print('1' != '1')  # False

# 2.3.是否大于
print(1 > 1)  # False
print(1 > 0)  # True
print(1 > 2)  # False

# 2.4.是否大于等于
print(1 >= 1)  # True
print(1 >= 0)  # True
print(1 >= 2)  # False

# 2.5.是否小于
print(1 < 1)  # False
print(1 < 0)  # False
print(1 < 2)  # True

# 2.6.是否小于等于
print(1 <= 1)  # True
print(1 <= 0)  # False
print(1 <= 2)  # True

# 2.7.连写比较表达式
num = 3
print(2 < num <= 5)  # True, 2 < num <= 5 等价于 num > 2 and num <=5

# 3.条件组合
# 3.1.逻辑且
# True   and  True    # 结果为 True
# True   and  False   # 结果为 False
# False  and  True    # 结果为 False
# False  and  False   # 结果为 False
num1 = 5
str1 = 'ok'
num1 > 4 and str1 == 'ok'  # 结果为 True
num1 > 4 and str1 == 'bad'  # 结果为 False
num1 > 6 and str1 == 'ok'  # 结果为 False
num1 > 6 and str1 == 'bad'  # 结果为 False

num1 > 4 and str1 == 'ok' and num1 > 5  # 结果为 False

# 3.2.逻辑或
# True   or  True    # 结果为 True
# True   or  False   # 结果为 True
# False  or  True    # 结果为 True
# False  or  False   # 结果为 False
num2 = 5
str2 = 'ok'
num2 > 4 or str2 == 'ok'  # 结果为 True
num2 > 4 or str2 == 'bad'  # 结果为 True
num2 > 6 or str2 == 'ok'  # 结果为 True
num2 > 6 or str2 == 'bad'  # 结果为 False

num2 > 6 or str2 == 'ok' or num2 != 5  # 结果为 True
num2 > 6 or str2 == 'sk' or num2 != 5  # 结果为 False

# 如果 and 和 or 一起使用， 注意 是先计算 and 部分， 其结果 再和 or 一起计算
6 > 5 or 'sk' == 'sk' and 4 == 5  # 结果为 True

# 3.3.逻辑非
# not  True    # 结果为 False
# not  False   # 结果为 True
num3 = 5
str3 = 'ok'
not num3 > 4  # 结果为 False
not str3 == 'sk'  # 结果为 True

# 如果not、 and 和 or 一起使用， 注意 是先计算 not ， 再计算 and 部分， 最后再计算 or
not 4 > 6 or 'sk' == 'ok' and 4 > 3  # 结果为 True


# 4.判断语句
def registerUser():
    phone = input('请输入你的手机号码(不超过11个字符)：')
    if len(phone) > 11:
        print('输入错误！手机号码超过了11个字符')
    # 还需要进一步判断 输入的是否全数字
    elif not phone.isdigit():  # isdigit 是字符串对象的方法，下一章会学到
        print('输入错误！手机号码必须全是数字')
    # 判断是否以数字1 开头
    elif not phone.startswith('1'):  # startswith 是字符串对象的方法，下一章会学到
        print('输入错误！手机号码必须以数字1开头')
    else:
        print('手机号码输入正确')
        print('执行 存储用户信息到数据库 的操作...')

    print('函数结束')


registerUser()


# 上面的函数是一个典型的例子：函数执行某个功能前，要做一些条件检查， 如果这些条件任何一个不满足， 后续的操作就不要做了。
# 这样的情况下，结合 return 语句，还有另外一种写法，如下
def registerUser1():
    phone = input('请输入你的手机号码(不超过11个字符)：')

    # 下面任何一个检查条件不通过，直接 return 返回
    if len(phone) > 11:
        print('输入错误！手机号码超过了11个字符')
        return

    if not phone.isdigit():
        print('输入错误！手机号码必须全是数字')
        return

    if not phone.startswith('1'):
        print('输入错误！手机号码必须以数字1开头')
        return

    # 前面的条件检查全部通过
    print('手机号码输入正确')
    print('执行 存储用户信息到数据库 的操作...')


registerUser1()


# 5.条件判断嵌套
#   里程       时间          收费
# <= 3公里	<= 1小时	    20 元/每公里
#            > 1小时	    22 元/每公里
#  >3公里  	<= 1小时	    15 元/每公里
#            > 1小时	    18 元/每公里
def charge(miles, duration):
    if miles <= 3:
        if duration <= 1:
            print('20 元/每公里')
            return miles * 20
        else:
            print('22 元/每公里')
            return miles * 22
    elif miles > 3:
        if duration <= 1:
            print('15 元/每公里')
            return miles * 15
        else:
            print('18 元/每公里')
            return miles * 18


charge(10, 0.5)


# 6.练习
# 请大家实现一个程序， 对天气的人体舒适度进行评估。 该程序运行起来先询问用户
# 请输入今天气温（单位 摄氏度）:
# 用户输入气温（比如28.3）后，再询问用户
# 请输入今天气压（单位 帕）:
# 用户输入气压（比如270）后进行如下判断：
# 如果气温 > 30 或者 < -8：显示：不舒适
# 如果气压 > 300 或者 < 20： 显示：不舒适
# 如果 25 < 气温 <= 30 并且 200 < 气压 <= 300：显示：比较舒适
# 如果 10 < 气温 <= 25 并且 100 < 气压 <= 200： 显示：特别舒适
# 如果 -8 <= 气温 <=10 并且 20 <= 气压 <= 100： 显示：比较舒适
# 其他情况： 显示 本程序不能判断
def test():
    qiWen = float(input('请输入今天气温（单位 摄氏度）:'))
    qiYa = float(input('请输入今天气压（单位 帕）:'))

    if qiWen > 30 or qiWen < -8 or qiYa > 300 or qiYa < 20:
        print('不舒适')
    elif 25 < qiWen <= 30 and 200 < qiYa <= 300:
        print('比较舒适')
    elif 10 < qiWen <= 25 and 100 < qiYa <= 200:
        print('特别舒适')
    elif -8 <= qiWen <= 10 and 20 <= qiYa <= 100:
        print('比较舒适')
    else:
        print('本程序不能判断')


test()
